The field of the invention is the testing of workstation hardware and software using regression testing techniques.
Computer programs used for testing software applications exist which can receive input data, such as key strokes, which are recognized by the software application. Upon receipt of the input data, these computer programs have the ability to store the input data (into files called test scripts), and to replay them such that the software application functions as though a user were actually typing the input data into the software application. In this way, input data can be repeatedly fed into the software application, with a user creating a test script by entering the input data only once.
By using such a computer program, a software application can be executed using a prepared test script, so as to verify that the software application performs as expected. This can be accomplished by comparing previously stored results with results which were subsequently acquired by replaying the test script through the software application. The fact that the software application performs as expected can also be used as an indication that the hardware on which the software application runs is performing as expected.
Regression testing involves providing a program with many different tests. The tests provide the program with different input. These tests exercise the specific functions, data structures, and features of the program. To perform regression testing, a computer executes the program a number of times. Each execution uses a different one of the regression tests in the script as input. The regression test results indicate which of the tests passed and which failed.
Different programmers modify different parts of the source code during application program development. Typically, the programmer compiles the program with just his/her changes. Before the programmer releases the changes, the programmer performs a number of tests on the changes. (The programmer xe2x80x9creleasesxe2x80x9d changes by allowing others in the development team to use the changed source code.) Ideally, the testing includes running the regression tests on the newly compiled program. The regression testing shows whether the program changes cause some of the regression tests to fail.
One problem with requiring a programmer to run the regression tests when a change is made, is that regression testing may take hours or even days. Regression test script libraries can be built up over months or years. The information about what is tested by them can be lost or may not be updated. Additionally, the volume of tests makes knowing which tests test which statements very difficult. The tests may be unsorted or unclassified as to which part of the program they test. Even tests that are understood will typically test other parts of the program than the target area. Therefore, it is very difficult for a programmer to know which of the regression tests will test a particular part of the program.
During the development of a computer system many application programs are typically created and modified by one or more programmers over an extended period of time. After the product is released, maintenance activities become an important factor over the life of the product. Studies have found that more than 50% of development effort in the life cycle of a software system is spent in maintenance, and of that, a large percentage is due to testing. Except for the rare event of a major rewrite, changes to a system in the maintenance phase are usually small and are made to correct problems or incrementally enhance functionally. Therefore, techniques for selective software retesting can help to reduce development time and maintenance time.
A test script library, which is used to test a software system, typically consists of many test scripts, each of which exercises or covers some subset of the entities of the system under test. A test script must be re-run if and only if any of the program entities it covers has changed. Information relating the test scripts to the various software entities in the computer system greatly facilitate regression testing. Keeping such information up-to-date during the active development period and the extended maintenance period of the product is very difficult.
The present invention is a method and means for maintaining a library of test scripts for use in regression testing application programs. More particularly, a test directory tree is maintained which is a mirror image of a source directory tree that is used to compile the executable code for the application program. The test directory tree indicates the test scripts which are to be used in regression testing executable code compiled from corresponding entries in the same directory trees. If no mirror entry exists in the test directory tree, one is automatically created and a corresponding default test script is created and stored in the library.